Istio RequestAuthentication
개요
Istio PeerAuthentication는 서비스 간 인증을 다뤘는데, 사실 구체적으로 들어가면 그냥 통신 간 암호화에 대한 설정이 주를 이룰 뿐이다.
반면 RequestAuthentication은 TLS가 아니라 실제 통신 내용에서 신원 인증을 하는 리소스이다.
기본적으로 JWT의 값을 기반으로 인증을 수행하며, 인증되지 않는다면 401에러를 반환시킨다.
주의할 점으로, JWT를 안 가져온 요청에 대해서는 익명 요청으로 간주하고 에러를 반환하지 않는다는 것.
익명 요청을 처리하는 것은 인가 단계에서 이뤄져야 한다.
이 놈도 워크로드 - 네임스페이스 - 전역 범위 정책 순을 따른다.
양식 작성법
apiVersion: security.istio.io/v1
kind: RequestAuthentication
metadata:
name: httpbin
namespace: foo
spec:
selector:
matchLabels:
app: httpbin
jwtRules:
- issuer: "issuer-foo"
jwksUri: https://example.com/.well-known/jwks.json
selector
말고 targetRef
를 통해 리소스를 명시적으로 지정하는 것도 가능하다.
jwtRules
쪽에 jwt 토큰에 들어갈 각종 설정들을 넣는다.
어디까지나 이 리소스는 인증을 위한 리소스임을 명심하자.
여기 설정에는 그냥 해당 jwt 토큰이 신뢰될 만한지 검증하는 내용만 들어간다.
간단하게 필드를 정리하자면,
- issuer, audiences - jwt의 표준 클레임들
- jwksUri, jwks - JWKS 값이나 해당 값을 받아올 경로를 넣는다.
- fromHeaders, fromParams, fromCookies - jwt 토큰이 있을 곳을 명시하는 필드.
관련 문서
이름 | noteType | created |
---|---|---|
5W - 이스티오 mTLS와 SPIFFE | published | 2025-05-11 |
5W - 이스티오 JWT 인증 | published | 2025-05-11 |
5W - 이스티오 인가 정책 설정 | published | 2025-05-11 |
E-istio-csr 사용 실습 | topic/explain | 2025-06-09 |
E-앰비언트 모드에서 메시 기능 활용 | topic/explain | 2025-06-07 |